// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    query: {},
    shopList: [],
    page: 1,
    pageSize: 10,
    total: 0, //
    isLoading:false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      query: options
    })
    this.getShopList()
  },

  //以分页形式获取商家列表信息
  getShopList: function (cb) {
    //设置为可加载数据状态
    this.setData({
      isLoading:true
    })

    //加载进行中，显示loading效果
    wx.showLoading({
      title: '加载中...',
    })
    wx.request({
      url: `https://www.escook.cn/categories/${this.data.query.id}/shops`,
      method: 'GET',
      data: {
        _page: this.data.page,
        _limit: this.data.pageSize,
      },
      success: (res) => {
        console.log(res)
        this.setData({
          shopList: [...this.data.shopList,...res.data],
          total: res.header['X-Total-Count'] - 0 //-0 表示字符串转数值
        })
      },
      //隐藏loading效果
      complete:()=>{
        wx.hideLoading()

        //不论成功或失败都要设置加载状态为false
        this.setData({isLoading:false})

        //停止下拉属性操作
        // wx.stopPullDownRefresh()

        cb && cb() //传了回调函数，就调用此回调函数
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    wx.setNavigationBarTitle({
      title: this.data.query.title,
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    //重置关键数据
    this.setData({
      page:1,
      shopList:[],
      total:0
    })

    //重新请求数据,刷新(传入一个回调函数)
    this.getShopList((cb)=>{
      wx.stopPullDownRefresh()
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    //一进来就要先判断是否还有更多数据
    if(this.data.page*this.data.pageSize>=this.data.total){
      //证明没有更多数据了
      return wx.showToast({
        title: '数据加载完毕！',
        icon:'none' //不显示加载图标
      })
    }

    //如果正在加载中，就不重复执行加载动作
    if(this.data.isLoading) return

    //否则就执行加载动作
    this.setData({
      page:this.data.page+1
    })

    //并调用方法
    this.getShopList();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})